#ifndef _SRKRT_DYNAMIC_LIST_
#define _SRKRT_DYNAMIC_LIST_

#include "srkrt_struct.h"
/* implementation de la liste dynamique 
TODO : A voir mettre en debut de liste les coups avec prises et a la fin ceux sans prises, comme ça avec l'utilisation de l'alpha/beta l'algorithme devrait ^etre plus rapide vu qu'il s'arrète quand il trouve le meilleur coup à jouer
*/ 


/* ---------------------------------------
	Declaration des fonctions 
--------------------------------------- */

/*
Nom : list_create
Fct : cree une nouvelle pile
Entree : adresse d'une List
Sortie : -
*/
void list_create(List* l);

/*
Nom : list_is_empty
Fct : détermine si une List est vide
Entree : List
Sortie : booléen
*/
bool list_is_empty(List* l);

/*
Nom : list_add
Fct : ajoute un élément à un List
Entree : adresse d'une List, Element
Sortie : -
*/
void list_add(List* l, Move m);

/*
Nom : p_list_remove
Fct : supprime l'élément de tete à un List

*/

void list_remove(List* l);

bool p_list_remove(List* l, Cel* cel, Move m);

/*
Nom : p_is_present
Fct : retourne true si l'element est egal
*/
bool p_is_present(List* l, Cel* cel, Move m);

bool apply_function_to_list(bool (*f)(List* l, Cel*, Move), List *list, Move m);
#endif